home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / lists / mint / l_1199 / 1039 < prev    next >
Encoding:
Internet Message Format  |  1994-08-27  |  14.6 KB

  1. From: Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
  2. Date: Fri, 18 Feb 94 10:39:48 +0100
  3. Message-Id: <9402180939.AA05174@issan.informatik.uni-dortmund.de>
  4. To: mint@atari.archive.umich.edu
  5. Subject: MiNT 1.10: some optimizations
  6.  
  7. bios.c:
  8. - do_bconin: use a separate variable for the return value from ioctl
  9. so that r can go into a register.
  10.  
  11. biosfs.c:
  12. - bios_fscntl, bios_ioctl: use switch instead of if/else if chain
  13.  
  14. context.spp:
  15. - restore_context: delete unnessesary branch instruction
  16.  
  17. file.h:
  18. - follow_links: make it a special value instead of a static variable,
  19. since only its address used
  20.  
  21. filesys.c:
  22. - follow_links: deleted
  23. - ext_paths: make it const
  24.  
  25. intr.spp:
  26. change `move.w #0,-(sp)' to `clr.w -(sp)' on the 68030, where it is
  27. faster. Not a big win, though :-)
  28.  
  29. mem.c:
  30. - VgetSize, Vsetmode: use trap_14_ww with gcc
  31.  
  32. pipefs.c:
  33. - pipe_ioctl: use switch instead of if/else if chain
  34.  
  35. signal.c:
  36. - check_sigs: don't mask curproc->sigpending twice
  37.  
  38. syscall.spp:
  39. change `move.w #0,-(sp)' into `clr.w -(sp)' and use index scale on the
  40. 68030
  41. - call_dosound: save one instruction. Hey, what the heck! :-)
  42.  
  43. tosfs.c:
  44. - tos_ioctl: use switch instead of if/else if chain
  45.  
  46. unifs.c:
  47. - uni_fscntl: same here
  48.  
  49. util.c:
  50. - mth_start: make it const
  51.  
  52. -------------------- cut here --------------------
  53. diff -ur orig/bios.c ./bios.c
  54. --- orig/bios.c    Fri Feb 11 19:16:12 1994
  55. +++ ./bios.c    Thu Feb 17 20:51:24 1994
  56. @@ -723,14 +723,15 @@
  57.  {
  58.      FILEPTR *f;
  59.      long r;
  60. +    long nread;
  61.      unsigned char c;
  62.  
  63.      if (dev < MAX_BHANDLE) {
  64.          f = curproc->handle[binput[dev]];
  65.          if (!f) return 0;
  66. -        r = 0;
  67. -        (void)(*f->dev->ioctl)(f, FIONREAD, &r);
  68. -        if (!r) return WOULDBLOCK;    /* data not ready */
  69. +        nread = 0;
  70. +        (void)(*f->dev->ioctl)(f, FIONREAD, &nread);
  71. +        if (!nread) return WOULDBLOCK;    /* data not ready */
  72.          if (is_terminal(f))
  73.              r = tty_getchar(f, RAW);
  74.          else {
  75. diff -ur orig/biosfs.c ./biosfs.c
  76. --- orig/biosfs.c    Fri Feb 11 21:03:02 1994
  77. +++ ./biosfs.c    Thu Feb 17 20:58:18 1994
  78. @@ -746,7 +746,9 @@
  79.      if (IS_FD_DIR(dir))
  80.          return EACCDN;
  81.  
  82. -    if ((unsigned)cmd == DEV_INSTALL) {
  83. +    switch ((unsigned) cmd) {
  84. +    case DEV_INSTALL:
  85. +        {
  86.          struct dev_descr *d = (struct dev_descr *)arg;
  87.  
  88.          b = kmalloc(SIZEOF(struct bios_file));
  89. @@ -762,8 +764,9 @@
  90.          set_xattr(&(b->xattr), S_IFCHR|DEFAULT_MODE, UNK_RDEV|devindex);
  91.          devindex = (devindex+1) & 0x00ff;
  92.          return (long)&kernelinfo;
  93. -    }
  94. -    if ((unsigned)cmd == DEV_NEWTTY) {
  95. +        }
  96. +    case DEV_NEWTTY:
  97. +        {
  98.          b = kmalloc(SIZEOF(struct bios_file));
  99.          if (!b) return ENSMEM;
  100.          b->tty = kmalloc(SIZEOF(struct tty));
  101. @@ -781,8 +784,9 @@
  102.          broot = b;
  103.          set_xattr(&(b->xattr), S_IFCHR|DEFAULT_MODE, BIOS_RDEV|(b->private&0x00ff));
  104.          return 0;
  105. -    }
  106. -    if ((unsigned)cmd == DEV_NEWBIOS) {
  107. +        }
  108. +    case DEV_NEWBIOS:
  109. +        {
  110.          b = kmalloc(SIZEOF(struct bios_file));
  111.          if (!b) return ENSMEM;
  112.          strncpy(b->name, name, BNAME_MAX);
  113. @@ -795,6 +799,7 @@
  114.          broot = b;
  115.          set_xattr(&(b->xattr), S_IFCHR|DEFAULT_MODE, BIOS_RDEV|(b->private&0x00ff));
  116.          return 0;
  117. +        }
  118.      }
  119.      return EINVFN;
  120.  }
  121. @@ -1260,19 +1265,21 @@
  122.      int i;
  123.      struct bios_file *b;
  124.  
  125. -    if (mode == FIONREAD) {
  126. +    switch (mode) {
  127. +    case FIONREAD:
  128.          if (bconstat(f->fc.aux))
  129.              *r = 1;
  130.          else
  131.              *r = 0;
  132. -    }
  133. -    else if (mode == FIONWRITE) {
  134. +        break;
  135. +    case FIONWRITE:
  136.          if (bcostat(f->fc.aux))
  137.              *r = 1;
  138.          else
  139.              *r = 0;
  140. -    }
  141. -    else if (mode == TIOCFLUSH) {
  142. +        break;
  143. +    case TIOCFLUSH:
  144. +        {
  145.          int oldmap;
  146.          IOREC_T *ior;
  147.          int flushtype;
  148. @@ -1320,8 +1327,9 @@
  149.              }
  150.          }
  151.          return 0;
  152. -    }
  153. -    else if (mode == TIOCOUTQ) {
  154. +        }
  155. +    case TIOCOUTQ:
  156. +        {
  157.          int oldmap;
  158.          IOREC_T *ior;
  159.  
  160. @@ -1343,13 +1351,18 @@
  161.           else
  162.              *r = 0;
  163.          return 0;
  164. -    }
  165. -    else if (mode == TIOCGWINSZ && f->fc.aux == 2) {
  166. +        }
  167. +    case TIOCGWINSZ:
  168. +        if (f->fc.aux != 2)
  169. +          return EINVFN;
  170.          aline = lineA0();
  171.          ws = (struct winsize *)buf;
  172.          ws->ws_row = *((short *)(aline - 42)) + 1;
  173.          ws->ws_col = *((short *)(aline - 44)) + 1;
  174. -    } else if (mode == TIOCIBAUD || mode == TIOCOBAUD) {
  175. +        break;
  176. +    case TIOCIBAUD:
  177. +    case TIOCOBAUD:
  178. +        {
  179.          long oldbaud, newbaud;
  180.          int oldmap;
  181.  
  182. @@ -1412,7 +1425,10 @@
  183.          if (newbaud > 0 && newbaud != oldbaud)
  184.              return ERANGE;
  185.          return 0;
  186. -    } else if (mode == TIOCCBRK || mode == TIOCSBRK) {
  187. +        }
  188. +    case TIOCCBRK:
  189. +    case TIOCSBRK:
  190. +        {
  191.          unsigned long bits;
  192.  
  193.          dev = f->fc.aux;
  194. @@ -1429,7 +1445,11 @@
  195.          else
  196.              bits |= 8;
  197.          (void)rsconf(-1, -1, -1, -1, (int)bits, -1);
  198. -    } else if (mode == TIOCGFLAGS || mode == TIOCSFLAGS) {
  199. +        break;
  200. +        }
  201. +    case TIOCGFLAGS:
  202. +    case TIOCSFLAGS:
  203. +        {
  204.          unsigned short oflags, flags, *sgflags;
  205.          unsigned long bits;
  206.          unsigned char ucr;
  207. @@ -1473,18 +1493,32 @@
  208.          } else {
  209.              return EINVFN;
  210.          }
  211. -    } else if ((mode >= TCURSOFF && mode <= TCURSSTEADY) && (f->fc.aux == 2)) {
  212. +        break;
  213. +        }
  214. +    case TCURSOFF:
  215. +    case TCURSON:
  216. +    case TCURSBLINK:
  217. +    case TCURSSTEADY:
  218. +        if (f->fc.aux != 2)
  219. +          return EINVFN;
  220.          return Cursconf(mode - TCURSOFF, 0);
  221. -    } else if ((mode >= TCURSSRATE && mode <= TCURSGRATE) && (f->fc.aux == 2)) {
  222. +    case TCURSSRATE:
  223. +    case TCURSGRATE:
  224. +        {
  225.          long r;
  226.  
  227. +        if (f->fc.aux != 2)
  228. +          return EINVFN;
  229.          r = Cursconf(mode - TCURSOFF, *((short *)buf));
  230.          if (r >= 0) {
  231.              *(short *)buf = r;
  232.              r = 0;
  233.          }
  234.          return r;
  235. -    } else if (mode == F_SETLK || mode == F_SETLKW) {
  236. +        }
  237. +    case F_SETLK:
  238. +    case F_SETLKW:
  239. +        {
  240.          struct flock *lck = (struct flock *)buf;
  241.  
  242.          b = (struct bios_file *)f->fc.index;
  243. @@ -1508,7 +1542,10 @@
  244.              b->lockpid = curproc->pid;
  245.              f->flags |= O_LOCK;
  246.          }
  247. -    } else if (mode == F_GETLK) {
  248. +        break;
  249. +        }
  250. +    case F_GETLK:
  251. +        {
  252.          struct flock *lck = (struct flock *)buf;
  253.  
  254.          b = (struct bios_file *)f->fc.index;
  255. @@ -1519,7 +1556,9 @@
  256.          } else {
  257.              lck->l_type = F_UNLCK;
  258.          }
  259. -    } else {
  260. +        break;
  261. +        }
  262. +    default:
  263.      /* Fcntl will automatically call tty_ioctl to handle
  264.       * terminal calls that we didn't deal with
  265.       */
  266. diff -ur orig/context.spp ./context.spp
  267. --- orig/context.spp    Tue Feb  1 04:28:18 1994
  268. +++ ./context.spp    Thu Feb 17 19:43:58 1994
  269. @@ -207,7 +207,6 @@
  270.      sub.w    d1,sp
  271.      sub.w    d1,sp
  272.      move.l    sp,a2
  273. -    bra.s    rcover
  274.      subq.w    #1,d1        ; correct for first time through loop
  275.  rcint:    move.w    (a1)+,(a2)+
  276.  rcover:    dbf    d1,rcint
  277. diff -ur orig/file.h ./file.h
  278. --- orig/file.h    Tue Feb 15 23:21:30 1994
  279. +++ ./file.h    Thu Feb 17 21:14:30 1994
  280. @@ -556,7 +556,7 @@
  281.  
  282.  extern FILESYS *drives[NUM_DRIVES];
  283.  extern struct tty default_tty;
  284. -extern char follow_links[];
  285. +#define follow_links ((char *)-1L)
  286.  #endif
  287.  
  288.  /* internal bios file structure */
  289. diff -ur orig/filesys.c ./filesys.c
  290. --- orig/filesys.c    Wed Feb  2 22:43:44 1994
  291. +++ ./filesys.c    Thu Feb 17 20:15:04 1994
  292. @@ -32,8 +32,6 @@
  293.  
  294.  FILEPTR *flist;        /* a list of free file pointers */
  295.  
  296. -char follow_links[1];    /* dummy "name" used as a parameter to path2cookie */
  297. -
  298.  /* vector of valid drives, according to GEMDOS */
  299.  /* note that this isn't necessarily the same as what the BIOS thinks of
  300.   * as valid
  301. @@ -130,7 +128,7 @@
  302.   *     load_devdriver() need access to it.
  303.   */
  304.  #define NPATHS 3
  305. -static const char *ext_paths[NPATHS] = {"", "\\MINT", "\\MULTITOS"};
  306. +static const char *const ext_paths[NPATHS] = {"", "\\MINT", "\\MULTITOS"};
  307.  
  308.  
  309.  void
  310. diff -ur orig/intr.spp ./intr.spp
  311. --- orig/intr.spp    Wed Feb  2 17:52:32 1994
  312. +++ ./intr.spp    Thu Feb 17 21:16:32 1994
  313. @@ -100,7 +100,11 @@
  314.      jsr    _build_context        ; build context
  315.      move.l    _curproc,a0
  316.      move.l    (a0),sp            ; use curproc->sysstack
  317. +%ifdef ONLY030
  318. +    clr.w    -(sp)            ; not a system call
  319. +%else
  320.      move.w    #0,-(sp)        ; not a system call
  321. +%endif
  322.      jsr    _enter_kernel        ; enter kernel
  323.      addq.w    #2,sp
  324.      jsr    _preempt        ; yield processor
  325. @@ -270,7 +274,11 @@
  326.      jsr    _build_context
  327.      move.l    _curproc,a4
  328.      move.l    (a4),sp            ; put us in the system stack
  329. +%ifdef ONLY030
  330. +    clr.w    -(sp)            ; not a GEMDOS call
  331. +%else
  332.      move.w    #0,-(sp)        ; not a GEMDOS call
  333. +%endif
  334.      jsr    _enter_kernel        ; set up kernel vectors
  335.      addq.w    #2,sp
  336.      move.l    _sig_routine,a1        ; get signal handling routine
  337. diff -ur orig/mem.c ./mem.c
  338. --- orig/mem.c    Tue Feb  1 04:31:44 1994
  339. +++ ./mem.c    Thu Feb 17 20:21:08 1994
  340. @@ -12,10 +12,15 @@
  341.  #include "fasttext.h" /* for line A stuff */
  342.  
  343.  #ifndef VgetSize
  344. +#ifdef __GNUC__
  345. +#define    VgetSize(mode) (long)trap_14_ww((short)91,(short)(mode))
  346. +#define Vsetmode(mode) (short)trap_14_ww((short)88,(short)(mode))
  347. +#else
  348.  extern long xbios();
  349.  #define VgetSize(mode) xbios(91, (short)(mode))
  350.  #define Vsetmode(mode) xbios(88, (short)(mode))
  351.  #endif
  352. +#endif
  353.  
  354.  static long core_malloc P_((long, int));
  355.  static void core_free P_((long));
  356. diff -ur orig/pipefs.c ./pipefs.c
  357. --- orig/pipefs.c    Wed Feb  9 23:08:10 1994
  358. +++ ./pipefs.c    Thu Feb 17 21:19:24 1994
  359. @@ -750,7 +750,8 @@
  360.  
  361.      this = (struct fifo *)f->fc.index;
  362.  
  363. -    if (mode == FIONREAD) {
  364. +    switch (mode) {
  365. +    case FIONREAD:
  366.              p = (f->flags & O_HEAD) ? this->outp : this->inp;
  367.              assert(p != 0);
  368.              if (p->writers <= 0 || p->writers == VIRGIN_PIPE) {
  369. @@ -763,8 +764,8 @@
  370.                      r = r >> 2;    /* r /= 4 */
  371.              }
  372.              *((long *) buf) = r;
  373. -    }
  374. -    else if (mode == FIONWRITE) {
  375. +            break;
  376. +    case FIONWRITE:
  377.              p = (f->flags & O_HEAD) ? this->inp : this->outp;
  378.              assert(p != 0);
  379.              if (p->readers <= 0) {
  380. @@ -777,8 +778,9 @@
  381.                      r = r >> 2;    /* r /= 4 */
  382.              }
  383.              *((long *) buf) = r;
  384. -    }
  385. -    else if (mode == F_SETLK || mode == F_SETLKW) {
  386. +            break;
  387. +    case F_SETLK:
  388. +    case F_SETLKW:
  389.          lck = (struct flock *)buf;
  390.          while (this->flags & O_LOCK) {
  391.              if (this->lockpid != curproc->pid) {
  392. @@ -806,8 +808,8 @@
  393.              this->lockpid = curproc->pid;
  394.              f->flags |= O_LOCK;
  395.          }
  396. -    }
  397. -    else if (mode == F_GETLK) {
  398. +        break;
  399. +    case F_GETLK:
  400.          lck = (struct flock *)buf;
  401.          if (this->flags & O_LOCK) {
  402.              lck->l_type = F_WRLCK;
  403. @@ -816,8 +818,9 @@
  404.          }
  405.          else
  406.              lck->l_type = F_UNLCK;
  407. -    }
  408. -    else if (mode == TIOCFLUSH) {
  409. +        break;
  410. +    case TIOCFLUSH:
  411. +        {
  412.          long flushtype;
  413.          long *which;
  414.  
  415. @@ -835,7 +838,9 @@
  416.              this->outp->head = this->outp->tail;
  417.              wake(IO_Q, (long)this->outp);
  418.          }
  419. -    } else if (mode == TIOCOUTQ) {
  420. +        break;
  421. +        }
  422. +    case TIOCOUTQ:
  423.              p = (f->flags & O_HEAD) ? this->inp : this->outp;
  424.              assert(p != 0);
  425.              if (p->readers <= 0) {
  426. @@ -847,11 +852,20 @@
  427.                      r = r >> 2;    /* r /= 4 */
  428.              }
  429.              *((long *) buf) = r;
  430. -    } else if (mode == TIOCIBAUD || mode == TIOCOBAUD) {
  431. +            break;
  432. +    case TIOCIBAUD:
  433. +    case TIOCOBAUD:
  434.          *(long *)buf = -1L;
  435. -    } else if (mode == TIOCGFLAGS) {
  436. +        break;
  437. +    case TIOCGFLAGS:
  438.          *((unsigned short *)buf) = 0;
  439. -    } else if (mode >= TCURSOFF && mode <= TCURSGRATE) {
  440. +        break;
  441. +    case TCURSOFF:
  442. +    case TCURSON:
  443. +    case TCURSSRATE:
  444. +    case TCURSBLINK:
  445. +    case TCURSSTEADY:
  446. +    case TCURSGRATE:
  447.      /* kludge: this assumes TOSWIN style escape sequences */
  448.          tty_putchar(f, (long)'\033', RAW);
  449.          switch (mode) {
  450. @@ -875,7 +889,8 @@
  451.          case TCURSGRATE:
  452.              return this->cursrate;
  453.          }
  454. -    } else {
  455. +        break;
  456. +    default:
  457.      /* if the file is a terminal, Fcntl will automatically
  458.       * call tty_ioctl for us to handle 'generic' terminal
  459.       * functions
  460. diff -ur orig/signal.c ./signal.c
  461. --- orig/signal.c    Wed Feb  9 23:10:02 1994
  462. +++ ./signal.c    Thu Feb 17 20:36:14 1994
  463. @@ -129,7 +129,6 @@
  464.                  } else {
  465.                      ulong omask;
  466.  
  467. -                    curproc->sigpending &= ~sigm;
  468.                      omask = curproc->sigmask;
  469.  
  470.          /* sigextra gives which extra signals should also be masked */
  471. diff -ur orig/syscall.spp ./syscall.spp
  472. --- orig/syscall.spp    Fri Feb 11 19:23:02 1994
  473. +++ ./syscall.spp    Thu Feb 17 22:11:32 1994
  474. @@ -139,7 +139,11 @@
  475.      move.l    8(a1),-(sp)
  476.      move.l    4(a1),-(sp)
  477.      move.l    (a1),-(sp)
  478. +%ifdef ONLY030
  479. +    clr.w    -(sp)            ; flag: NOT GEMDOS
  480. +%else
  481.      move.w    #0,-(sp)        ; flag: NOT GEMDOS
  482. +%endif
  483.      jsr    _enter_kernel        ; set up vectors appropriately
  484.      addq.w    #2,sp
  485.      bra    _syscall
  486. @@ -166,7 +170,11 @@
  487.  ;
  488.  ; the shortcuts are also turned off if BIOSBUF=n
  489.  ;
  490. +%ifdef ONLY030
  491. +    clr.w    -(sp)            ; flag: NOT a GEMDOS call
  492. +%else
  493.      move.w    #0,-(sp)        ; flag: NOT a GEMDOS call
  494. +%endif
  495.      jsr    _enter_kernel        ; set up BIOS vectors
  496.      addq.w    #2,sp
  497.      tst.w    _bconbdev        ; is BIOS buffering on?
  498. @@ -267,9 +275,13 @@
  499.  check_max:
  500.      cmp.w    d5,d0
  501.      bcc.s    error
  502. +%ifdef ONLY030
  503. +    move.l    0(a5,d0.w*4),d0        ; d0 = syscall_tab[d0]
  504. +%else
  505.      add.w    d0,d0
  506.      add.w    d0,d0            ; multiply by 4
  507.      move.l    0(a5,d0.w),d0        ; d0 = syscall_tab[d0]
  508. +%endif
  509.      beq.s    error            ; null entry means invalid call
  510.      addq.w    #2,sp            ; pop function number off stack
  511.      move.l    d0,a0
  512. @@ -399,8 +411,7 @@
  513.  ;
  514.      XDEF    _call_dosound
  515.  _call_dosound:
  516. -    move.l    4(sp),d0
  517. -    move.l    d0,-(sp)
  518. +    move.l    4(sp),-(sp)
  519.      move.w    #32,-(sp)
  520.      trap    #14
  521.      addq.w    #6,sp
  522. diff -ur orig/tosfs.c ./tosfs.c
  523. --- orig/tosfs.c    Wed Feb  2 20:36:50 1994
  524. +++ ./tosfs.c    Thu Feb 17 20:43:22 1994
  525. @@ -1150,11 +1150,14 @@
  526.      struct tindex *ti;
  527.      extern int flk;        /* set in main.c if _FLK already installed */
  528.  
  529. -    if (mode == FIONREAD || mode == FIONWRITE) {
  530. +    switch (mode) {
  531. +    case FIONREAD:
  532. +    case FIONWRITE:
  533.          *((long *)buf) = 1;
  534.          return 0;
  535. -    }
  536. -    else if (mode == F_SETLK || mode == F_SETLKW || mode == F_GETLK) {
  537. +    case F_SETLK:
  538. +    case F_SETLKW:
  539. +    case F_GETLK:
  540.          fl = ((struct flock *)buf);
  541.          t.l = *fl;
  542.          switch(t.l.l_whence) {
  543. diff -ur orig/unifs.c ./unifs.c
  544. --- orig/unifs.c    Fri Feb 11 19:28:04 1994
  545. +++ ./unifs.c    Thu Feb 17 21:32:06 1994
  546. @@ -690,7 +702,10 @@
  547.      extern struct kerinfo kernelinfo;
  548.      extern FILESYS *active_fs;
  549.  
  550. -    if (cmd == FS_INSTALL) { /* install a new filesystem */
  551. +    switch (cmd) {
  552. +    case FS_INSTALL:
  553. +        {
  554. +    /* install a new filesystem */
  555.          struct fs_descr *d = (struct fs_descr*)arg;
  556.          FILESYS *fs;
  557.  
  558. @@ -701,7 +704,10 @@
  559.          d->file_system->next = active_fs;
  560.          active_fs = d->file_system;
  561.          return (long)&kernelinfo;  /* return pointer to kernel info as OK */
  562. -    } else if (cmd == FS_MOUNT) {  /* install a new gemdos-only device for this FS */
  563. +        }
  564. +    case FS_MOUNT:
  565. +        {
  566. +    /* install a new gemdos-only device for this FS */
  567.          struct fs_descr *d = (struct fs_descr*)arg;
  568.          FILESYS *fs;
  569.          UNIFILE *u;
  570. @@ -732,7 +738,10 @@
  571.          u->next = u_root;
  572.          u_root = u;
  573.          return (long)u->dev;
  574. -    } else if (cmd == FS_UNMOUNT) {  /* remove a file system's directory */
  575. +        }
  576. +    case FS_UNMOUNT:
  577. +        {
  578. +    /* remove a file system's directory */
  579.          struct fs_descr *d = (struct fs_descr*)arg;
  580.          FILESYS *fs;
  581.          UNIFILE *u;
  582. @@ -765,7 +774,10 @@
  583.          u->mode &= ~S_IFMT;
  584.          u->mode |= S_IFLNK;
  585.          return uni_remove(dir, name);
  586. -    } else if (cmd == FS_UNINSTALL) {    /* remove file system from kernel list */
  587. +        }
  588. +    case FS_UNINSTALL:
  589. +        {
  590. +    /* remove file system from kernel list */
  591.          struct fs_descr *d = (struct fs_descr*)arg;
  592.          FILESYS *fs, *last_fs;
  593.          UNIFILE *u;
  594. @@ -791,7 +803,8 @@
  595.              fs = fs->next;
  596.          }
  597.          return EFILNF;
  598. -    } else {
  599. +        }
  600. +    default:
  601.      /* see if we should just pass this along to another file system */
  602.          r = uni_lookup(dir, name, &fc);
  603.          if (r == 0) {
  604. diff -ur orig/util.c ./util.c
  605. --- orig/util.c    Wed Sep 15 02:44:12 1993
  606. +++ ./util.c    Thu Feb 17 20:50:10 1994
  607. @@ -297,7 +297,7 @@
  608.   * a Unix time (seconds from midnight Jan 1., 1970)
  609.   */
  610.  
  611. -static int
  612. +static int const
  613.  mth_start[13] = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 };
  614.  
  615.  long ARGS_ON_STACK 
  616.